有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在循环并返回主方法时退出类?

好吧,我又回来了,我遇到了一堵新墙。我正在努力想办法摆脱ticketInput()回到我的mainInputMenu()。这不是我的全部代码,但为了收集我试图做的事情的想法,我认为这足以理解我的问题

主要方法----

public class Tickets {

public static void main(String[] args) {

    mainInputMenu();

}

    private static void mainInputMenu() {

    Machine whichMachine = new Machine();

    int machineNumber = Machine.readInput();

    while ( machineNumber == 1 ) {
        machineOne ( machineNumber );
    }
    while ( machineNumber == 2 ) {
        Machine machineTwo = new Machine();
    }
    while ( machineNumber == 3 ) {
        System.exit(0);
    }

}

private static void machineOne(int machineNumber) {
    Machine.option = 1;
    Machine.writeOutput();
    Machine.ticketInput();
}
}

在类文件中-------

public static void ticketInput() {

    Scanner keyboard = new Scanner ( System.in );
    String ticketCounter;
    int counter = 0;

    do {
        System.out.printf ( "Your choice: " );
        ticketCounter = keyboard.next();
        if ( ticketCounter.matches ( "[0-9]+" ) ) {
            counter = Integer.parseInt ( ticketCounter );
        }
        if ( counter < 1 || counter > 11 ) {
            System.out.println ( "Try again!" );
        }
    } while ( counter < 1 || counter > 11 );

    switch (counter) {
        case 1:
            rSelected = "Uptown";
            break;
        case 2:
            rSelected = "Downtown";
            break;
        case 3:
            aSum = aSum + 1;
            break;
        case 4:
            if ( aSum > 0 ) {
                aSum = aSum - 1;
            }
            else {
                System.out.println ( "Cannot go below 0." );
            }

            break;
        case 5:
            cSum = cSum + 1;
            break;
        case 6:
            if ( cSum > 0 ){
                cSum = cSum -1;
            }
            else {
                System.out.println ( "Cannot go below 0." );
            }
            break;
        case 7:
            creditSum = creditSum + 0.25;
            break;
        case 8:
            creditSum = creditSum + 1.00;
            break;
        case 9:
            creditSum = creditSum + 2.00;
            break;     
        case 10:
            System.out.println ( "-----------------\n"
                    + "YOU GOT YOUR TICKET!!!\n"
                    + "-----------------");
            System.exit(0);
        case 11:
            //Return to main menu
        default:
            break;
    }

我很感激任何能指导我解决这个问题的建议。我觉得这是一个简单的声明,我似乎无法从互联网上挖掘出来


共 (2) 个答案

  1. # 1 楼答案

    如果从函数return返回,它将返回调用函数

    System.exit(0)的调用将终止您的应用程序

    所以,用return;替换System.exit(0)

    您必须添加一个循环,以便在main方法中连续获取菜单和其他功能,如下所示:

     public static void main(String[] args) {
      while(true) {
        // Add some breaking option here.
        mainInputMenu();
      }
    
    }
    
  2. # 2 楼答案

    你可以这样更改mainInputMenu()

    private static void mainInputMenu() 
    { 
    
         Machine whichMachine = new Machine();
    
         int machineNumber = Machine.readInput();
         do
         {
            if (machineNumber == 1)    machineOne (machineNumber);
            else if (machineNumber == 2)    Machine machineTwo = new Machine();
            else if (machineNumber == 3)  System.exit(0);
            int machineNumber = Machine.readInput();
         }while (machineNumber > 0 && machineNumber < 4);
    
    
    }
    

    在这里,您可以反复运行machineOne()

    现在你可以从ticketInput()返回

    case 11: return;